package com.smart.community.region.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 店铺费用标准VO
 * 
 * @author Wu.Liang
 * @version 1.0.0
 * @since 2025-09-30
 */
@Data
@Schema(description = "店铺费用标准VO")
public class ShopFeeStandardVO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 费用标准ID
     */
    @Schema(description = "费用标准ID", example = "1")
    private Long id;
    
    /**
     * 店铺ID
     */
    @Schema(description = "店铺ID", example = "1")
    private Long shopId;
    
    /**
     * 店铺名称
     */
    @Schema(description = "店铺名称", example = "张三便利店")
    private String shopName;
    
    /**
     * 费用类型：PROPERTY-物业费，WATER-水费，ELECTRIC-电费，GAS-燃气费，SANITATION-卫生费
     */
    @Schema(description = "费用类型", example = "PROPERTY")
    private String feeType;
    
    /**
     * 费用类型名称
     */
    @Schema(description = "费用类型名称", example = "Property Fee")
    private String feeTypeName;
    
    /**
     * 费用费率
     */
    @Schema(description = "费用费率", example = "10.50")
    private BigDecimal feeRate;
    
    /**
     * 费用单位
     */
    @Schema(description = "费用单位", example = "元/平方米/月")
    private String feeUnit;
    
    /**
     * 生效日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "生效日期", example = "2025-01-01")
    private LocalDate effectiveDate;
    
    /**
     * 失效日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "失效日期", example = "2025-12-31")
    private LocalDate expiryDate;
    
    /**
     * 状态：0-禁用，1-启用
     */
    @Schema(description = "状态", example = "1")
    private Integer status;
    
    /**
     * 状态名称
     */
    @Schema(description = "状态名称", example = "启用")
    private String statusName;
    
    /**
     * 备注
     */
    @Schema(description = "备注", example = "费用标准备注")
    private String remark;
    
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "创建时间", example = "2025-09-30 10:00:00")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "更新时间", example = "2025-09-30 10:00:00")
    private LocalDateTime updateTime;
    
    /**
     * 创建人
     */
    @Schema(description = "创建人", example = "1")
    private Long createBy;
    
    /**
     * 更新人
     */
    @Schema(description = "更新人", example = "1")
    private Long updateBy;
}
